import { Injectable, NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

// 定义统一响应对象的接口
interface Response<T> {
    code: number; // 状态码
    message: string; // 提示信息
    data: T; // 数据
}

@Injectable()
export class ResponseInterceptor<T> implements NestInterceptor<T, Response<T>> {
    intercept(context: ExecutionContext, next: CallHandler): Observable<Response<T>> {
        return next.handle().pipe(
            map((data) => ({
                code: 200, // 状态码，这里默认设置为 200 表示成功
                message: '请求成功', // 提示信息
                data, // 实际返回的数据
            })),
        );
    }
}